eslint

吴龙淼 写于 2024-02-18

pnpm install --save-dev eslint @babel/eslint-parser

npm install --save-dev eslint prettier eslint-plugin-prettier eslint-config-prettier

简单示例

// .eslintrc.json
// .eslintrc.js
// .eslintignore

{
  "parser": "@babel/eslint-parser",
  "parserOptions": {
      "ecmaVersion": 6,
      "sourceType": "module",
      "ecmaFeatures": {
          "jsx": true
      }
  },
  "rules": {
      "semi": 2
  },
  extends: [
    'eslint:recommended',
    'plugin:prettier/recommended', // 必须放在最后以覆盖其他配置
  ],
  plugins: ['prettier'],
}

pnpm eslint --init
npx eslint yourfile.js
eslint --fix --ext .js,.jsx,.vue backend frontend

配置项

"semi"                    : ["error", "never"],                                        // 不使用分号
"quotes"                  : ["error", "single"],                                       // 单引号
"indent"                  : ["error", 2],                                              // 缩进规则
"linebreak-style"         : ["error", "unix"],                                         // unix风格结尾
"comma-dangle"            : "error",                                                   // 对象、数据组等字面量的项尾不能有逗号
"object-shorthand"        : "error",                                                   // 对象内属性使用简明形式
"dot-notation"            : "error",                                                   // 对象使用. []时优先以.表示
"no-multiple-empty-lines" : ["error", { "max": 1, "maxEOF": 1 }],                      // 最大空行
"no-multi-spaces"         : "error",                                                   // 不能有多余的空格
"comma-spacing"           : ["error", { "before": false, "after": true }],             // 逗号空格
"spaced-comment"          : ["error", "always"],                                       // 注释空格
"keyword-spacing"         : ["error", { "after": true }],                              // 关键字空格
"arrow-spacing"           : "error",                                                   // 箭头函数空格
"no-trailing-spaces"      : "error",                                                   // 禁用尾空格
"space-infix-ops"         : ["error", {"int32Hint": false}],                           // 中缀操作符空格
"space-unary-ops"         : ["error", { "words": true, "nonwords": false }],           // 一元运算符的前/后加空格
"no-extra-parens"         : "error",                                                   // 禁止多余括号
"array-bracket-spacing"   : ["error", "always"],                                       // 数组空格
"object-curly-spacing"    : ["error", "always"],                                       // 对象字面量空格
"key-spacing"             : ["error", { "beforeColon": false, "afterColon": true }],   // 对象冒号空格
"eqeqeq"                  : ["error", "always"],                                       // 完全相等
"no-unused-vars"          : ["off", {"vars": "all", "args": "after-used"}],            // 不能有声明后未被使用的变量或参数
"no-var"                  : "error",                                                   // 禁用var
"prefer-const"            : "warn",                                                    // 首选const
"no-const-assign"         : "error",                                                   // const不可修改
"no-invalid-regexp"       : "error",                                                   // 禁止无效的正则表达式
"radix"                   : "error",                                                   // parseint必须指定进制
"no-duplicate-case"       : "error",                                                   // case不可重复
"no-duplicate-imports"    : "error",                                                   // import不可重复
"no-return-assign"        : "off",                                                     // return表达式规则
"no-else-return"          : "error",                                                   // if包含return,不允许使用else
"no-empty-character-class": "error",                                                   // 正则不允许匹配空字符[]
"no-empty-pattern"        : "error",                                                   // 不允许空解构
"no-dupe-keys"            : "error",                                                   // 对象禁止重复key
"camelcase"               : "off",                                                     // 驼峰
"consistent-return"       : "off",                                                     // return 后面是否允许省略
"no-eval"                 : "error",                                                   // eval不可用
"complexity"              : ["error",50]                                               // 圈复杂度

prettier

.prettierrc
.prettierrc.json

npx prettier --write yourfile.js